共计 986 个字符,预计需要花费 3 分钟才能阅读完成。
问题
在华为云上购买的 SFS 由于业务已经下线,资源未被使用。需要回收节省费用。
cd $nfs_mountpoint && find . -type f -mtime -365 -ls
在挂载了nfs的服务器上,执行 find 确认没有增量文件写入后,于控制台执行了退订回收处理。
然后马上就发生了告警,node_exporter 采集不到服务器监控数据。
此时执行 umount 命令会卡住无响应:
umount $nfs_mountpoint
执行强制卸载会提示:device is busy
$ umount -f /testmount
umount.nfs: /testmount: device is busy
解决
这是一个常见的NFS挂载问题。当NFS服务器变得不可用时,客户端上的相关操作可能会挂起或阻塞。
umount -l
和 umount -f
是两个不同的选项,用于在卸载文件系统时处理不同的情况。
-
umount -l
(懒惰卸载):- 懒惰卸载会立即分离文件系统,使其对系统的其余部分不可见。
- 然而,它并不会立即完成所有与文件系统相关的操作。如果文件系统正在使用中,卸载操作会延迟到文件系统不再繁忙的时候。
- 这对于卡住或无响应的 NFS 挂载特别有用,因为它允许你快速分离文件系统,而不必等待挂起的操作完成。
- 懒惰卸载不会强制关闭任何打开的文件或终止任何使用文件系统的进程。
- 在某些情况下,懒惰卸载可能会导致某些进程继续使用已卸载的文件系统,这可能导致这些进程挂起或出现意外行为。
-
umount -f
(强制卸载):- 强制卸载会尝试立即卸载文件系统,即使它正在被使用。
- 它会向使用文件系统的所有进程发送终止信号,强制它们关闭任何打开的文件并停止使用文件系统。
- 如果进程没有响应终止信号,
umount -f
可能会失败。 - 强制卸载可能导致数据丢失,因为打开的文件可能会被突然关闭,而未完成的写入操作可能会被丢弃。
- 由于其破坏性,
umount -f
应该谨慎使用,只在其他方法失败时使用。
在当前情况下,使用:umount -l
可以解决卸载失败问题。
umount -l $nfs_mountpoint
随后重启node_exporter:
systemctl restart node_exporter
至此故障解决。
总结
虽然没有造成大的影响,但是需要注意无论是移除本地磁盘还是网络磁盘前,确认磁盘未用后需要先卸载掉在回收。
挂载亦表示操作系统仍在引用它。
正文完
发表至: Linux
2024-05-08